﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Security;
using VSD.OneStopService.BLL;

/// <summary>
/// Summary description for RolesExtender
/// </summary>
public class RolesExtender
{
    public static void RemoveAllRoles(string userName)
    {
        string[] roles = Roles.GetRolesForUser(userName);
        if (roles.Length > 0)
        {
            Roles.RemoveUserFromRoles(userName, roles);
        }
    }

    ///summary>
    /// Xóa 1 nhóm và cập nhật lại quyền cho 1 người dùng
    /// </summary>
    /// <param name="userName"></param>
    /// <param name="groupId"></param>
    public static void RemoveRolesGoupForUser(string userName, int groupId)
    {
        ///Lấy quyền của nhóm
        RolesGroupRepository roleGroupRepository = new RolesGroupRepository();
        List<RolesGroup> rolesGroup = roleGroupRepository.GetRolesGroupByGroupID(groupId);

        ///Loại quyền của người dùng trong nhóm, xóa bản quyền trung gian
        foreach (RolesGroup roleGroup in rolesGroup)
        {
            if (Roles.IsUserInRole(userName, roleGroup.RoleName))
            {
                Roles.RemoveUserFromRole(userName, roleGroup.RoleName);
            }
        }

        ////Cập nhật lại quyền cho tất cả người dùng trong nhóm.
        List<RolesGroup> otherRolesGroup = roleGroupRepository.GetRolesOfGroupByUserName(userName);
        foreach (RolesGroup role in otherRolesGroup)
        {
            if (!Roles.IsUserInRole(userName, role.RoleName))
            {
                Roles.AddUserToRole(userName, role.RoleName);
            }
        }

    }



    public static void AddRolesGoupForUser(string userName, List<int> groupIds)
    {
        RolesGroupRepository rolesGroupRepository = new RolesGroupRepository();

        foreach (int groupID in groupIds)
        {
            List<RolesGroup> roleGroups = rolesGroupRepository.GetRolesGroupByGroupID(groupID);
            foreach (RolesGroup role in roleGroups)
            {
                if (!Roles.IsUserInRole(userName, role.RoleName))
                {
                    Roles.AddUserToRole(userName, role.RoleName);
                }
            }
        }
    }
}